package cn.edu.zufe.mjt.hash;

import java.util.HashMap;
import java.util.Scanner;

/**
 * 严格递增三元组问题
 * 给定长度为 n 的数组，找出所有严格递增三元组（1 ≤ i < j < k ≤ n），使得 a[i] = a[k] = a[j] + 1。
 * 解题关键，枚举中间的 j 分别维护前缀 mapPre 和后缀 mapSuf，<值，出现次数>
 *
 */
public class StrictlyIncrementTriples {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = sc.nextInt();
        }
        Solution(nums);
    }

    public static void Solution(int[] nums) {
        HashMap<Integer, Integer> mapPre = new HashMap<>();
        HashMap<Integer, Integer> mapSuf = new HashMap<>();
        for (int num : nums) {
            mapSuf.put(num, mapSuf.getOrDefault(num, 0) + 1);
        }
        int ans = 0;
        for (int num : nums) {
            mapSuf.put(num, mapSuf.get(num) - 1);
            ans += mapPre.getOrDefault(num + 1, 0) * mapSuf.getOrDefault(num + 1, 0);
            mapPre.put(num, mapPre.getOrDefault(num, 0) + 1);
        }
        System.out.println(ans);
    }
}
